package com.taotao.service.impl;

import com.taotao.entity.ItemCat;
import com.taotao.entity.ItemCatExample;
import com.taotao.entity.item.category.EUTreeNode;
import com.taotao.mapper.ItemCatMapper;
import com.taotao.service.CategoryService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Service
public class CategoryServiceImpl implements CategoryService {
    @Resource
    private ItemCatMapper itemCatMapper;

    @Override
    public List<EUTreeNode> getCategoryList(Long parentId) {

        // 1. 创建查询条件
        ItemCatExample example = new ItemCatExample();
        ItemCatExample.Criteria criteria = example.createCriteria();
        criteria.andParentIdEqualTo(parentId); // 查询父节点下的所有子节点
        criteria.andStatusEqualTo(1); // 查询未删除状态的菜单
        // TODO 权限拦截
        // 2. 根据条件查询
        List<ItemCat> list = itemCatMapper.selectByExample(example);
        List<EUTreeNode> resultList = new ArrayList<>();
        // 3. 把列表转换成 EasyUI Tree 需要的json格式
        for (ItemCat category : list) {
            EUTreeNode node = new EUTreeNode();
            node.setId(category.getId());
            node.setText(category.getName());
            node.setState(category.getIsParent() == 0 ? "open" : "closed");
            resultList.add(node);
        }
        // 4. 返回结果
        return resultList;
    }

    @Override
    public List<EUTreeNode> getCategoryList() {

        // 1. 创建查询条件
        ItemCatExample example = new ItemCatExample();
        ItemCatExample.Criteria criteria = example.createCriteria();
        criteria.andStatusEqualTo(1); // 查询未删除状态的菜单
        // TODO 权限拦截
        // 2. 根据条件查询
        List<ItemCat> list = itemCatMapper.selectByExample(example);
        List<EUTreeNode> resultList = new ArrayList<>();
        // 3. 把列表转换成 EasyUI Tree 需要的json格式
        for (ItemCat category : list) {
            EUTreeNode node = new EUTreeNode();
            node.setId(category.getId());
            node.setText(category.getName());
            node.setState(category.getIsParent() == 0 ? "open" : "closed");
            node.setParentId(category.getParentId());
            resultList.add(node);
        }
        // 4. 返回结果
        return resultList;
    }
}
